#!/bin/sh

# First argument is absolute path to top of component source directory
# Second argument is absolute path to top of component build directory
# Third argument is component source directory for qa tests

# Absolute path to the top of the source directory
abs_top_srcdir=@abs_top_srcdir@

# Absolute path to the top of the build directory
abs_top_builddir=@abs_top_builddir@

# current QA srcdir
export srcdir=$3

# Where to find my swig generated shared library
mylibdir=$2/src:$2/src/.libs:$2/src/lib:$2/src/lib/.libs

# Where to find my swig generated python module
mysrcdir=$1/src:$1/src/lib

# Where to find my hand written python modules
mypydir=$1/src:$1/src/python

# Where to find core's swig generated shared libraries,
# and hand generated swig glue
grswigdir=@gnuradio_core_SWIGDIRPATH@

# Where to find core's python modules
grpydir=@gnuradio_core_PYDIRPATH@

# Construct search path for python modules, if each exists
for dir in $grswigdir $grpydir
do
    if [ "$dir" != "" ]
    then
	if [ "$PYTHONPATH" = "" ]
	then
	    PYTHONPATH="$dir"
	else
	    PYTHONPATH="$dir:$PYTHONPATH"
	fi
    fi
done

# Where to find pre-installed python modules
withpydirs=@with_PYDIRPATH@

# Add the 'with' dirs to the end of the python search path, if it exists
if [ "$withpydirs" != "" ]
then
    PYTHONPATH="$PYTHONPATH:$withpydirs"
fi

# Add the "my" dirs to the absolute front of the python search path
PYTHONPATH="$mylibdir:$mysrcdir:$mypydir:$PYTHONPATH"
export PYTHONPATH

# Where to find omnithread library files
gromnidir=@omnithread_LIBDIRPATH@

# Where to find gruel library files
grueldir=@gruel_LIBDIRPATH@

# Where to find gnuradio core's library files
grcoredir=@gnuradio_core_LIBDIRPATH@

# Construct search path for python modules
# Check each one to make sure it's not "" before adding
grlibdir=""
for dir in $gromnidir $grcoredir $grueldir
do
    if [ "$dir" != "" ]
    then
	if [ "$grlibdir" = "" ]
	then
	    grlibdir="$dir"
	else
	    grlibdir="$dir:$grlibdir"
	fi
    fi
done

# Add 'mylibdir' to the start of the library load path, to get local
# (to this component) created libraries

# Where to find pre-installed libraries
withlibdirs=@with_LIBDIRPATH@

case "@host_os@" in
  darwin*)
    # Special Code for executing on Darwin / Mac OS X only
    if [ "$DYLD_LIBRARY_PATH" = "" ]
    then
	DYLD_LIBRARY_PATH=$mylibdir
    else
	DYLD_LIBRARY_PATH=$mylibdir:$DYLD_LIBRARY_PATH
    fi
    # DYLD_LIBRARY_PATH will not be empty now
    # Add the grlibdir paths to the front of any library load variable
    if [ "$grlibdir" != "" ]
    then
	DYLD_LIBRARY_PATH=$grlibdir:$DYLD_LIBRARY_PATH
    fi
    # Add the withdirs paths to the end of any library load variable
    if [ "$withlibdirs" != "" ]
    then
	DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$withlibdirs
    fi
    export DYLD_LIBRARY_PATH
    ;;
  cygwin*|win*|mingw*)
    # Special Code for executing on Win32 variants only
    if [ "$PATH" = "" ]
    then
	PATH=$mylibdir
    else
	PATH=$mylibdir:$PATH
    fi
    # PATH will not be empty now
    # Add the grlibdir paths to the front of any library load variable
    if [ "$grlibdir" != "" ]
    then
	PATH=$grlibdir:$PATH
    fi
    # Add the withdirs paths to the end of any library load variable
    if [ "$withlibdirs" != "" ]
    then
	PATH=$PATH:$withlibdirs
    fi
    export PATH
    ;;
esac

# Don't load user or system prefs
GR_DONT_LOAD_PREFS=1
export GR_DONT_LOAD_PREFS

# Run everything that matches qa_*.py and return the final result.

ok=yes
for file in $3/qa_*.py
do
  # echo $file
  @PYTHON@ $file
  r=$?
  if [ $r -ne 0 ]
  then
    if [ $r -ge 128 ]		# killed by a signal
    then
      exit $r
    fi
    ok=no
  fi  
done

if [ $ok = yes ]
then
  exit 0
else
  exit 1
fi
